<<<(main)#if !defined($(base_name)_S_SERVE_H_INCLUDED_H)
#define $(base_name)_S_SERVE_H_INCLUDED_H

#include "ace/Log_Msg.h"
#include "$(lower_base_name)_s_api_i.h"
#include "$(service_name)_s_default_ack.h"
#include "AsyncCall\DispUnit.h"

class McServe_$(service_name) : public IRequest_$(service_name), public IServeImpl<IResponse_$(service_name)>, public $(service_name)::IDefaultAckImpl_s, public $(service_name)::ICallExceptionImpl_s
{
public:
	//need to implement IRequest_$(service_name)
<<<(methods,!client_side)<<<(comments)
	//$(comment)>>><<<(in_args)<<<(comments,have_element)
	//$(arg_name)>>><<<(comments):$(comment)>>>>>>
	virtual void $(method_name)_s(long lngSerialNo, const MsAddr& peerAddr, const map<string, string>& context<<<(in_args), $(const_arg_ref_type) $(arg_name)>>>);>>>

	//need to implement IServe
	virtual void self_disp_unit_appear(long module_id);
	virtual void self_disp_unit_disappear();
	virtual void peer_disp_unit_appear(const map<MsAddr, MsInstanceInfo>& appear_dispunit);
	virtual void peer_disp_unit_disappear(const set<MsAddr>& disappear_dispunit);
//add other code

};
extern McServe_$(service_name)* gpServe_$(service_name);

#endif // !defined($(base_name)_S_SERVE_H_INCLUDED_H)>>>